package com.abel.bigwater.dataserver.model.qdies

import io.netty.buffer.ByteBuf
import java.util.*

class MainAskMeterConfigData() : DtenEmptyData() {
    override var type = FuncType.AskMeterConfig
}

/**
 * 0x10 表计配置
上位机发送： 帧头 地址 0x10 0x04 485表计配置 模拟量表计配置
脉冲表计配置 扩展表计配置 校验 帧尾
配置成功， D10应答： 帧头 地址 0x10 0x01 0xAA 校验 帧尾
配置失败， 所启用的485表计的总线地址和规约号重复
D10应答： 帧头 地址 0x10 0x01 0xE0 校验 帧尾
配置失败， 所启用的485表计的电压不一致
D10应答： 帧头 地址 0x10 0x01 0xE1 校验 帧尾
485表计配置—字节低5位代表5只485表计， 当启用某只485表计时，
相应的位置1
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 0 0 485表
计5
485表
计4
485表
计3
485表
计2
485表
计1
内 部
表 计
地址5
内 部
表 计
地址4
内 部
表 计
地址3
内 部
表 计
地址2
内 部
表 计
地址1
模拟量表计配置—字节低5位分别代表5只模拟量表计， 当启用某只
表计时， 相应的位置1
 */
class MainSetMeterConfigData() : D10BaseData(4) {
    override var type = FuncType.SetMeterConfig

    var rs485Config: BitSet? = null

    var analogConfig: BitSet? = null

    var pulseConfig: BitSet? = null

    var extConfig = BitSet(8)

    override fun fill(buf: ByteBuf) {
        buf.writeBytes(if (rs485Config!!.isEmpty) byteArrayOf(0) else rs485Config!!.toByteArray())
                .writeBytes(if (analogConfig!!.isEmpty) byteArrayOf(0) else analogConfig!!.toByteArray())
                .writeBytes(if (pulseConfig!!.isEmpty) byteArrayOf(0) else pulseConfig!!.toByteArray())
                .writeBytes(if (extConfig.isEmpty) byteArrayOf(0) else extConfig.toByteArray())
    }

    override fun parse(buf: ByteBuf): Boolean {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun count(): Int = len
}